import requests
import json
import time

# 简单的API调用示例

# 服务器URL
API_URL = "http://localhost:5000/process/video"
STATUS_URL_TEMPLATE = "http://localhost:5000/task/{task_id}"

# 请求数据
request_data = {
    "video_url": "https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4",
    "process_func": "get_video_info"
}

# 确保设置正确的Content-Type头
headers = {"Content-Type": "application/json"}

print("===== 简单视频信息API调用示例 =====")
print(f"服务器: {API_URL}")
print(f"处理函数: {request_data['process_func']}")
print(f"视频URL: {request_data['video_url']}")

# 发送请求
try:
    print("\n发送请求...")
    response = requests.post(API_URL, json=request_data, headers=headers)
    
    # 检查响应
    if response.status_code == 200:
        result = response.json()
        task_id = result.get("task_id")
        print(f"✅ 请求成功！任务ID: {task_id}")
        print(f"当前状态: {result.get('status')}")
        
        # 轮询任务状态
        print("\n开始轮询任务状态...")
        max_polls = 15  # 最多轮询15次
        poll_count = 0
        
        while poll_count < max_polls:
            time.sleep(2)  # 每2秒检查一次
            poll_count += 1
            
            status_url = STATUS_URL_TEMPLATE.format(task_id=task_id)
            status_response = requests.get(status_url)
            
            if status_response.status_code == 200:
                status_data = status_response.json()
                current_status = status_data.get("status")
                print(f"轮询 {poll_count}/{max_polls}: 状态 = {current_status}")
                
                if current_status == "completed":
                    print("✅ 任务已完成！")
                    print("\n📋 结果查看方法:")
                    print("1. 查看应用程序日志获取详细视频信息")
                    print("2. 如果设置了callback_url，结果已发送到该URL")
                    print("3. 您可以修改app.py添加同步API直接获取结果")
                    break
                elif current_status == "failed":
                    print("❌ 任务失败！")
                    print(f"错误信息: {status_data.get('error', '未知错误')}")
                    break
        else:
            print("⏱️ 任务处理超时，请稍后手动查询状态。")
            print(f"查询URL: {STATUS_URL_TEMPLATE.format(task_id=task_id)}")
    else:
        print(f"❌ 请求失败，状态码: {response.status_code}")
        print(f"错误信息: {response.text}")
        print("\n🔧 可能的解决方案:")
        print("1. 确保Flask服务器正在运行: python run.py")
        print("2. 检查网络连接")
        print("3. 验证视频URL的有效性")
        
except Exception as e:
    print(f"❌ 发生错误: {str(e)}")
    print("\n🔧 可能的解决方案:")
    print("1. 确保Flask服务器正在运行: python run.py")
    print("2. 检查网络连接")

print("\n===== API调用示例结束 =====")

# 额外提示
print("\n💡 额外提示:")
print("- 要查看日志，您可以运行: python run.py > app.log 2>&1")
print("- 要直接测试视频信息功能，运行: python test_with_local_video.py")
print("- 所有依赖问题已解决，应用可以正常使用")